package com.dm.base.config;

import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.OAuthBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.Arrays;
import java.util.Collections;

//@Configuration
//@EnableSwagger2
public class SwaggerConfig {

//    @Bean
//    public Docket createRestApi() {
//        return new Docket(DocumentationType.SWAGGER_2)
//                .pathMapping("/*")
//                .apiInfo(apiInfo())
//                .select()
//                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
//                .paths(PathSelectors.any())
//                .build()
//                .securitySchemes(Collections.singletonList(securitySchemes()))
//                .securityContexts(Collections.singletonList(securityContexts()));
//    }
//
//
//    /**
//     * 认证方式使用密码模式
//     */
//    private SecurityScheme securitySchemes() {
//        GrantType grantType = new ResourceOwnerPasswordCredentialsGrant("/uaa/oauth/token");
//
//        return new OAuthBuilder()
//                .name("Authorization")
//                .grantTypes(Collections.singletonList(grantType))
//                .scopes(Arrays.asList(scopes()))
//                .build();
//    }
//
//    /**
//     * 设置 swagger2 认证的安全上下文
//     */
//    private SecurityContext securityContexts() {
//        return SecurityContext.builder()
//                .securityReferences(Collections.singletonList(new SecurityReference("Authorization", scopes())))
//                .forPaths(PathSelectors.any())
//                .build();
//    }
//
//    /**
//     * 允许认证的scope
//     */
//    private AuthorizationScope[] scopes() {
//        AuthorizationScope authorizationScope = new AuthorizationScope("*", "接口测试");
//        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
//        authorizationScopes[0] = authorizationScope;
//        return authorizationScopes;
//    }
//
//    /**
//     * 添加摘要信息
//     */
//    private ApiInfo apiInfo() {
//        // 用ApiInfoBuilder进行定制
//        return new ApiInfoBuilder()
//                // 设置标题
//                .title("DOOM开源")
//                // 描述
//                .description("DOOM开源接口文档")
//                // 作者信息
//                .contact(new Contact("陈文波", "https://www.doom.com", "940227746qq.com"))
//                // 版本
//                .version("版本号:1.0")
//                .build();
//    }

}
